<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Getting Started Hacking E3</title>
  </head>

  <body>
    <h1><center>Getting Started Hacking E3</center></h1>
    <hr>
    
    <p>Hacking an emulator is typically a complex project.  Even
      emulating something as simple as the
      <a href="http://dmoz.org/Computers/Systems/Commodore/Commodore_64/Emulators/">Commodore 64</a>
      is actually quite an intensive project, requiring a lot of
      research to understand the internals of the hardware.  Hacking
      something as complex as a Lisp machine emulator is of an entirely
      different order compared to a C64 emulator of course.  There are
      literally <b>hundreds of pounds</b> of documentation available,
      and most of it is either in a custom text format (Visidoc) or in
      huge PDFs containing grainy scans.

    <p>A good
      <a href="http://lists.unlambda.com/mailman/private/lispm-hackers/2001-December/000117.html">description</a>
      of things to <em>start</em> reading if you're interested in
      hacking E3 was posted on the Lispm-Hackers list in December
      2001.

    <p>Probably the most important thing is to read the sources with a
      copy of the SSDN2 at your side.  Start at app.cc and work your
      way through the startup process.  It may help to run e3 in gdb
      so you can step your way through it to see what it does.

    <p>At the current point in the development process our major focus
      is on the function calling macroinstructions, and on
      implementing the macroinstruction set in general.  Our process
      is fairly simple: we implement each instruction necessary in the
      boot process as they appear, starting with CALL-1-DEST-INDS.
      This of course means that the instructions are going to be
      implemented in a weird and haphazard fashion, but the idea is
      that our software is <em>growing</em> as we learn more about how
      the system works.  Since we don't completely understand the
      low-level details of the microcode, nor do we have the sources
      to the microcode, we can't know in advance exactly how the
      macroinstructions are implemented.  Thus development is a
      process of continual discovery.  It is perhaps this particular
      reason why development progresses so slowly -- because it's far
      more interesting to <em>learn</em> how the system works than it
      is to program it.

    <p>Hopefully there will be more guidelines and hints listed here
      in the future.  Keep your browser peeled, and watch for notes on
      the list.

    <hr>
    <address><a href="mailto:james@unlambda.com">James A. Crippen</a></address>
<!-- Created: Pri Aft 72 20:15:09 AKST 3167 -->
<!-- hhmts start -->
Last modified: Sun Dec 30 20:38:46 AKST 2001
<!-- hhmts end -->
  </body>
</html>
